

#ifndef _ILISTENERFACTORY__H__
#define _ILISTENERFACTORY__H__

#include "IComponent.hpp"

//namespace ElementalEngine
//{
class IListener;

/// \interface IListenerFactory
/// \brief this interface is for listener factories.
class IListenerFactory :  public IComponent
{
public:
	virtual ~IListenerFactory() {};
	/// Register a IListener with the system
	/// \param sourceListener - Listener that gets callbacks from system
	/// \param priority - priority listener is called
	virtual void Register(IListener *sourceListener, DWORD priority) = 0;
	/// UnRegister a IListener with the system
	/// \param sourceListener - Listener that gets callbacks from system
	/// \return true if found and unregistered
	virtual bool UnRegister(IListener *sourceListener) = 0;
};

//}	//namespace ElementalEngine

#endif